﻿using System;
using System.Collections.Generic;
using MovieDB.Common;
using MovieDB.DTOs;
using MovieDB.Entities;

namespace MovieDB.RepositoryInterfaces
{
    public interface IMovieRepository
    {
        IEnumerable<MovieDto> SearchForAutocomplete(string movieName);
        PagedMovieDto GetAllMoviesPaged(int page, int pageSize);
        MovieDto GetMovieById(Guid movieId);
        void SaveMovie(MovieDto movieDto);
        AudioQualityDto GetAudioQualityDto(AudioType audioType, AudioChannels audioChannels);
        VideoQualityDto GetVideoQualityDto(VideoType videoType, VideoResolution videoResolution);
        VideoQuality GetVideoQualityEntity(VideoType videoType, VideoResolution videoResolution);
        AudioQuality GetAudioQualityEntity(AudioType audioType, AudioChannels audioChannels);
        void DeleteMovie(Guid movieId);
        bool IsTitleAvailable(string title, Guid? movieId);
        PagedMovieDto GetMoviesByIds(IEnumerable<Guid> movieIds, int page, int pageSize);
        PagedMovieDto GetMovieByGenre(MovieGenre category, int page, int pageSize);
        IEnumerable<MovieDto> GetMostRecentMovies(int amountOfRecentMovies);
        PagedMovieDto GetMovieByVideoType(VideoType videoType, int page, int pageSize);
    }
}